package cn.com.zzl.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Description：Regular Expressions正则表达式工具类，工具类一般都做成静态方法
 *  			静态方法不用创建对象就能调用，方便直接，也能节省内存。
 *  		    该工具类提供了5种验证方式！！！
 * Created by 朱正磊 on 2017-04-24 10:00.
 */
public class RegExUtil {

	private String regex;//正则表达式字符串

	private String toBeVerify;//待验证字符串

	/**********************【单例设计模式】*************************/
	private final static RegExUtil instance = new RegExUtil();//唯一实例
	private RegExUtil(){}
	public static RegExUtil getInstance(){
		return instance;
	}
	/**********************【单例设计模式】*************************/

	/**
	 * @Desc 由正则表达式自定义构造函数
	 * @param regex
	 */
	public RegExUtil(String regex){
		this.regex = regex;
	}

	/**
	 * @Desc 由正则表达式和待验证字符串自定义构造函数
	 * @param regex
	 * @param toBeVerify
	 */
	public RegExUtil(String regex, String toBeVerify){
		this.regex = regex;
		this.toBeVerify = toBeVerify;
	}

	/**
	 * @Desc 根据正则表达式验证字符串，RegExUtil(String regex)
	 * @param toBeVerify 待验证字符串
	 * @return 返回验证结果，如果验证通过返回true，否则返回false
	 */
	public boolean regex(String toBeVerify){
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(toBeVerify);
		return matcher.matches();
	}

	/**
	 * @Desc 根据正则表达式验证字符串，RegExUtil(String regex, String toBeVerify)
	 * @return 返回验证结果，如果验证通过返回true，否则返回false
	 */
	public boolean regex(){
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(toBeVerify);
		return matcher.matches();
	}

	/**
	 * @Desc 静态方法，可类名调用
	 * @param regex 正则表达式字符串
	 * @param toBeVerify 待验证字符串
	 * @return 返回验证结果，如果验证通过返回true，否则返回false
	 */
	public static boolean regex(String regex, String toBeVerify){
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(toBeVerify);
		return matcher.matches();
	}

	/***【说明：这里的setter和getter方法是为了单例设计模式准备的，其实getter方法可以不写】***/

	public String getRegex() {
		return regex;
	}
	public void setRegex(String regex) {
		this.regex = regex;
	}

	public String getToBeVerify() {
		return toBeVerify;
	}
	public void setToBeVerify(String toBeVerify) {
		this.toBeVerify = toBeVerify;
	}

}
